package org.groupg.practice;

import com.univocity.parsers.csv.CsvParser;
import com.univocity.parsers.csv.CsvParserSettings;
import java.io.File;

public class LargeFileReader {
    public static void main(String[] args) {
        File largeFile = new File("data/large_file.csv");

        CsvParserSettings settings = new CsvParserSettings();
        settings.getFormat().setLineSeparator("\n");
        settings.getFormat().setDelimiter(',');

        // 大文件优化配置
        settings.setReadInputOnSeparateThread(false); // 单线程更省内存
        settings.setInputBufferSize(65536);          // 64KB缓冲区
        settings.setLineSeparatorDetectionEnabled(true);
        settings.setMaxCharsPerColumn(100000);       // 每列最大字符数

        // 统计行数
        long rowCount = 0;

        CsvParser parser = new CsvParser(settings);
        parser.beginParsing(largeFile);

        String[] row;
        while ((row = parser.parseNext()) != null) {
            rowCount++;
            if (rowCount % 100000 == 0) {
                System.out.println("已处理: " + rowCount + " 行");
            }
            // 处理业务逻辑（不要累积数据）
        }

        parser.stopParsing();
        System.out.println("总共处理: " + rowCount + " 行");
    }
}